<?php

/**
 * 
 * 文件操作类（包括上传，获取指定url文件）
 * @author kwor
 *
 */

class getfile {

/**
 * 检查目标文件夹是否存在，如果不存在则自动创建该目录
 *
 * @access      public
 * @param       string      folder     目录路径。不能使用相对于网站根目录的URL
 *
 * @return      bool
 */
function make_dir($folder)
{
	$reval = false;

	if (!file_exists($folder))
	{
		/* 如果目录不存在则尝试创建该目录 */
		@umask(0);

		/* 将目录路径拆分成数组 */
		preg_match_all('/([^\/]*)\/?/i', $folder, $atmp);

		/* 如果第一个字符为/则当作物理路径处理 */
		$base = ($atmp[0][0] == '/') ? '/' : '';

		/* 遍历包含路径信息的数组 */
		foreach ($atmp[1] AS $val)
		{
			if ('' != $val)
			{
				$base .= $val;

				if ('..' == $val || '.' == $val)
				{
					/* 如果目录为.或者..则直接补/继续下一个循环 */
					$base .= '/';

					continue;
				}
			}
			else
			{
				continue;
			}

			$base .= '/';

			if (!file_exists($base))
			{
				/* 尝试创建目录，如果创建失败则继续循环 */
				if (@mkdir(rtrim($base, '/'), 0777))
				{
					@chmod($base, 0777);
					$reval = true;
				}
			}
		}
	}
	else
	{
		/* 路径已经存在。返回该路径是不是一个目录 */
		$reval = is_dir($folder);
	}

	clearstatcache();

	return $reval;
}
 
 
 
	

/**
 *
 * 直接上传文件
 * @param unknown_type $fname
 * @param unknown_type $path
 * @param unknown_type $bigsize    //最大上传
 * @param unknown_type $savename   //保存的文件名（没有就没人随机生成）
 * @param unknown_type $usetype_or_namefile  //用哪种方式验证文件类型（false为后缀，true为mine字符串）
 * @param unknown_type $upfile_type //上传类型数值
 */
function upfile($fname,$path='',$bigsize=307200,$savename='',$usetype_or_namefile=true,$upfile_type='')
{
	//这里直接传图像数组，或函数获取
	if(!is_array($fname)){
		$file = $_FILES[$fname];
	}else
	{
		$file = $fname;
	}


	if($file['size']>$bigsize){return false;}//判断大小是否超过规定


	//判断类型是否一致
	if(is_array($upfile_type)){
		if($usetype_or_namefile==true){
			if(!in_array($file['type'],$upfile_type)){return false;}
		}else{
			$exname=strrchr($file['name'],".");
			if(!in_array($exname,$upfile_type)){return false;}
		}
	}



	if($path==''){
		$path = date("Ymd")."/";
	}else {
		$path = $path."/".date("Ymd")."/";
	}

	//不存在就创建路径
	if(!file_exists($path))
	{
		$this->make_dir($path);
	}
	//获取要上传的文件名称
	$info = pathinfo($file['name']);

	//保存后的名称
	if($savename==''){
		$filename = time().rand(0,9999).".".$info['extension'];
	}else{
		$filename = $savename.".".$info['extension'];
	}

	//移动文件到指定位置
	if(!move_uploaded_file ($file['tmp_name'],$path.$filename))
	{
		return false;
	}

	return  $path.$filename;

}
 	
	
	
/**
 * 直接获取外部网址文件
 * @param $str   //网址（包括文件名）
 * @param $path  //本地保存路径
 * @param $getfile_type //可获取的文件类型，可以是   jpa|gif|png|xxx 这样的形式
 */
function get_module_outpic($str,$path,$getfile_type='jpa|gif|png'){

	if($getfile_type!==''){
	    preg_match_all("/http:\/\/([^ '\"<>]+)\.(".$getfile_type.")/is",$str,$array);
	}else {
		return false;
	}
	
	$filedb=$array[0];
	foreach( $filedb AS $key=>$value){
		if( strstr($value,$webdb[www_url]) ){
			continue;
		}
		$listdb["$value"]=$value;
	}
	unset($filedb);
	foreach( $listdb AS $key=>$value){
		$filedb[]=$value;
		$exname=strrchr(basename($value),".");//获取图片后缀
		$name = time().rand(0,9999).$exname;//拼接图片名称
		
		if(!is_dir($path)){
			$this->make_dir($path);
		}
		
		if( @copy($value,$path."/".$name) ){
		}elseif($filestr=file_get_contents($value)){
			write_file($path."/".$name,$filestr);
		}
		$uploadfile=$path."/".$name;
		
	}
	return $array;
}
 
}

?>